#include "PajaritoVerde.h"

using namespace TP::Juego::Arena::Actores;

PajaritoVerde::PajaritoVerde() : Pajarito(PAJARITOVERDE) {
	this->setVida(vida_pajaro_verde);
}

PajaritoVerde::PajaritoVerde(const string& pNombre) : Pajarito(pNombre) {
	this->setVida(vida_pajaro_verde);
}

PajaritoVerde::~PajaritoVerde() { }

int PajaritoVerde::getPuntaje() {
	return puntaje_pajaro_verde;
}

TiXmlElement* PajaritoVerde::aElementoXML() {

	TiXmlElement * element = new TiXmlElement(PAJARITOVERDE);

	element->SetAttribute("nombre", this->Nombre().c_str());
	element->SetDoubleAttribute("vida", this->getVida());

	if (NULL == this->getTrayectoria())
		element->LinkEndChild(new TiXmlElement("NULL"));
	else
		element->LinkEndChild(this->getTrayectoria()->aElementoXML());

	return element;

	return element;
}

void PajaritoVerde::deElementoXML(TiXmlElement* pElemento) {
	double tmp;
	if (strcmp(pElemento->Value(), PAJARITOVERDE) == 0) {
		this->setNombre(pElemento->Attribute("nombre"));
		pElemento->Attribute("vida", &tmp);
		this->setVida(tmp);
		Trayectoria* trayectoria = new Trayectoria();
		trayectoria->deElementoXML(pElemento->FirstChildElement());
		this->setTrayectoria(trayectoria);
	}
}

double PajaritoVerde::getAlturaRebote() const {
	return rebote_pajaro_verde;
}

double PajaritoVerde::getRadio() {
	return radio_pajaro_verde;
}

// Retorna los puntos del actor por ser destruido.
int PajaritoVerde::getPuntosDestruccion() {
	return puntaje_pajaro_verde;
}

// Retorna el daño que le hace el actor a un cerdito.
double PajaritoVerde::getDanioContraCerdito() {
	return danio_pajaro_verde_cerdito;
}

// Retorna el daño que le hace el actor a una superficie.
double PajaritoVerde::getDanioContraSuperficie() {
	return danio_pajaro_verde_superficies;
}

// Retorna el daño que le hace el actor a un pajarito.
double PajaritoVerde::getDanioContraPajarito() {
	return 0;
}